import Vue from 'vue'
import moment from 'moment'
import 'moment/locale/zh-cn'
import { i18nRender } from '@/locales'
import { ATTRIBUTE_TYPE_ENUM } from '@/utils/enum'

import { rootURL } from '@/config/api.config'
moment.locale('zh-cn')

Vue.filter('NumberFormat', function (value) {
  if (!value) {
    return '0'
  }
  const intPartFormat = value.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 将整数部分逢三一断
  return intPartFormat
})

Vue.filter('dayjs', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
  return moment(dataStr).format(pattern)
})

Vue.filter('moment', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
  if (!dataStr) return ''
  return moment(dataStr).format(pattern)
})

// 人员在职状态
Vue.filter('userStatusFilter', function (value) {
  const map = {
    1: i18nRender('modules.user.onJob'),
    2: i18nRender('modules.user.resigned')
  }

  return map[value] || ''
})

Vue.filter('userStatusColorFilter', function (value) {
  const map = {
    1: 'success',
    2: 'default'
  }

  return map[value] || ''
})

// 性别
Vue.filter('genderFilter', function (value) {
  const map = {
    0: i18nRender('modules.user.female'),
    1: i18nRender('modules.user.male')
  }

  return map[value] || ''
})

// 手机号
Vue.filter('phoneFilter', function (phone, region) {
  if (!phone) return ''
  return `+${region}${phone}`
})

// 图片路径全匹配
Vue.filter('imgURLFilter', function (value) {
  if (!value) return ''
  return rootURL + value
})

// uda 是否
Vue.filter('booleanFilter', value => {
  const map = {
    0: i18nRender('common.no'),
    1: i18nRender('common.yes')
  }

  return map[value] || ''
})

// uda 类型
Vue.filter('attributeTypeFilter', value => ATTRIBUTE_TYPE_ENUM[value] || value || '')
